package chapt01;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

public class MyTextFile implements MyInterface {
	private ArrayList<Number> number = new ArrayList<Number>();//создаем список
	File tf = new File("TextFile.txt");
	PrintWriter pw;
	public MyTextFile () {//создает текстовый файл
	if(!tf.exists())
		try {
			tf.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	//
public void WriteToFile(Number numb) {//++ метод для записи элемента number в файл
		try {
            FileWriter fw = new FileWriter(tf, true);
            try {fw.append(numb.toString());}
            finally {fw.close();}
        }
        catch (IOException e) {
            throw new RuntimeException(e);
        }   
    }
	//
public ArrayList<Number> ReadFromFile() {//++ получение массива строк из файла
		Number num = new Number();
		String s = "";
		number.clear();
		try {
			FileReader fr = new FileReader(tf);
			BufferedReader br = new BufferedReader(fr);			
        	try {
         		while ((s = br.readLine()) != null) {
        			number.add(num.fromString(s));	
         			} 
         		}
            finally {
            	br.close();
            }       	
		}
        catch (IOException e) {
               throw new RuntimeException(e);
        }
		return number;
	}	
	//
public void EditToFile(ArrayList<Number> number_tmp) {//++ метод для записи списка в файл
		   try { 
			   try {
				   pw = new PrintWriter(tf, "UTF-8");
				   for (Number el : number_tmp)
					   pw.print(el.toString());
			   }
	        finally {
	        	pw.close();
	        	}
		   }
	    catch (IOException e) {throw new RuntimeException(e);}}
	
public ArrayList<Number> EditFromList(int index, String s){//++ для изменения элемента в списке
		Number num_ind = new Number();
		number.set(index, num_ind.fromString(s));
		return number;	
	}
	
public void AddToList(String surname, String name, String age){//++ для добавления элемента в список(использует WriteToFile)
		Number tmp = new Number(surname, name, age); 
		number.add(tmp);//добавляем в список данные 
		WriteToFile(tmp);
		}
	
public String[] GetSelected(int index, String s){//++ для отправки данных в текстовые поля
		String tmp[] = new String[3];
		Number num_ind = number.get(index);
		tmp[0]=num_ind.getSurName();
		tmp[1]=num_ind.getName();
		tmp[2]=num_ind.getAge();
		return tmp;
	} 
}
